In [9]:
from sklearn.datasets import make_regression
import pandas as pd
import numpy as np

import plotly.express as px
import plotly.graph_objects as go

from sklearn.metrics import mean_absolute_error,mean_squared_error,r2_score
In [10]:
X,y=make_regression(n_samples=100,n_features=2,n_informative=2,n_targets=1,noise=50)
In [11]:
df=pd.DataFrame({'feature1':X[:,0],'feature2':X[:,1],'target':y})
In [12]:
df.shape
Out[12]:
(100, 3)
In [13]:
df.corr()
Out[13]:
feature1 feature2 target
feature1 1.000000 0.134161 0.252948
feature2 0.134161 1.000000 0.794147
target 0.252948 0.794147 1.000000
In [14]:
#model=sm.ols('target ~ feature1 + feature2 ',df).fit()
#print(model.params)
In [15]:
fig=px.scatter_3d(df,x='feature1',y='feature2',z='target')
fig.show()
In [17]:
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=3)
In [18]:
from sklearn.linear_model import LinearRegression
In [19]:
lr=LinearRegression()
lr.fit(X_train,y_train)
Out[19]:
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,
         normalize=False)
In [21]:
y_pred=lr.predict(X_test)
In [23]:
print("MAE",mean_absolute_error(y_test,y_pred))
print("MSE",mean_squared_error(y_test,y_pred))
print("R2 score ",r2_score(y_test,y_pred))
MAE 32.787670062326164
MSE 1886.2174902779639
R2 score  0.6359537944862013
In [27]:
x=np.linspace(-5,5,10)
y=np.linspace(-5,5,10)
xGrid,yGrid=np.meshgrid(y,x)
final=np.vstack((xGrid.ravel().reshape(1,100),yGrid.ravel().reshape(1,100))).T
z_final=lr.predict(final).reshape(10,10)
z=z_final
In [28]:
fig=px.scatter_3d(df,x='feature1',y='feature2',z='target')
fig.add_trace(go.Surface(x=x,y=y,z=z))
fig.show()
In [29]:
lr.coef_
Out[29]:
array([11.13053336, 61.97800753])
In [30]:
lr.intercept_
Out[30]:
-7.76793285104767
In [ ]: